const bcrypt = require('bcryptjs')
const { query } = require('../config/database')

async function insertTestUsers () {
  try {
    console.log('🔄 开始插入测试用户数据...')

    // 检查是否已有用户数据
    const existingUsers = await query('SELECT COUNT(*) as count FROM users')
    if (existingUsers[0].count > 0) {
      console.log('✅ 用户数据已存在，跳过插入')
      return
    }

    // 默认密码
    const defaultPassword = '123456'
    const hashedPassword = await bcrypt.hash(defaultPassword, 10)

    // 测试用户数据
    const testUsers = [
      {
        email: 'admin@example.com',
        username: '超级管理员',
        password: hashedPassword,
        role: 'admin',
        is_vip: true,
        coins: 9999
      },
      {
        email: 'user@example.com',
        username: '书虫小王',
        password: hashedPassword,
        role: 'user',
        is_vip: true,
        coins: 1200
      },
      {
        email: 'test@example.com',
        username: '测试用户',
        password: hashedPassword,
        role: 'user',
        is_vip: false,
        coins: 100
      }
    ]

    // 插入用户数据
    for (const user of testUsers) {
      await query(
        `INSERT INTO users (email, username, password, role, is_vip, coins) VALUES (?, ?, ?, ?, ?, ?)`,
        [
          user.email,
          user.username,
          user.password,
          user.role,
          user.is_vip,
          user.coins
        ]
      )
      console.log(`✅ 已插入用户: ${user.email}`)
    }

    console.log('🎉 测试用户数据插入完成！')
    console.log('📝 默认登录信息：')
    console.log('   管理员账号: admin@example.com / 123456')
    console.log('   普通用户: user@example.com / 123456')
    console.log('   测试账号: test@example.com / 123456')
  } catch (error) {
    console.error('❌ 插入测试用户失败:', error)
    throw error
  }
}

// 如果直接运行此脚本
if (require.main === module) {
  insertTestUsers()
    .then(() => {
      console.log('脚本执行完成')
      process.exit(0)
    })
    .catch(error => {
      console.error('脚本执行失败:', error)
      process.exit(1)
    })
}

module.exports = insertTestUsers
